package com.dyna.auth.service;

import com.dyna.api.domain.req.LoginEntity;
import com.dyna.api.domain.resp.AuthLoginResp;
import com.dyna.domain.dto.LoginUser;

/**
 * @author zhoucaiwang
 * @date 2023/8/15
 */
public interface LoginService {

    /**
     * 登录
     * @param login 登录用户信息
     * @return 是否登录成功
     */
    AuthLoginResp login(LoginEntity login);

    /**
     * 验证账号 + 密码。如果通过，则返回用户
     *
     * @param username 账号
     * @param password 密码
     * @return 用户
     */
    LoginUser authenticate(String username, String password);

    /**
     * 基于 token 退出登录
     *
     * @param token token
     * @param logType 登出类型
     */
    void logout(String token, Integer logType);

    /**
     * 刷新访问令牌
     *
     * @param refreshToken 刷新令牌
     * @return 登录结果
     */
    AuthLoginResp refreshToken(String refreshToken);

}